home *** CD-ROM | disk | FTP | other *** search
/ Click Press Kit / Click Press Kit.iso / mac / QuickTime704.pkg / Contents / Resources / VolumeCheck < prev   
Encoding:
Text File  |  2005-10-11  |  2.8 KB  |  141 lines

  1. #!/usr/bin/perl
  2.  
  3. my $SYSVERS = "$ARGV[0]"."/System/Library/CoreServices/SystemVersion.plist";
  4. my $QUICKTIME_VERS = "$ARGV[0]"."/System/Library/Frameworks/QuickTime.framework/Versions/A/Resources/version.plist";
  5. my $EXIT_VALUE = 0;
  6. my $TIER_3_LANG = $ARGV[0] . "/var/db/.AppleTier3Language";
  7.  
  8.  
  9.  
  10.  
  11. DO_CHECKS: 
  12. {
  13.  
  14.     #
  15.     # Target volume must contain a X system.
  16.     #
  17.     if($ARGV[0] ne "/") 
  18.     {
  19.         $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) | 16);
  20.         last;
  21.     }
  22.     
  23.     # Must NOT be tier 3
  24.     if (-e $TIER_3_LANG) {
  25.         $EXIT_VALUE = (( 1 << 6 ) | ( 1 << 5 ) );
  26.         last;
  27.     }
  28.  
  29.     #
  30.     # Don't install if target system is less than 10.2.8 (make that 10.3 for seed)
  31.     #
  32. #       if(CheckVersion( "$SYSVERS", "10.2.8", "ProductVersion", "<" ))
  33.        if(CheckVersion( "$SYSVERS", "10.3.9", "ProductVersion", "<" ))
  34.     {
  35.         $EXIT_VALUE = (( 1 << 5 ) | 17);
  36.         last;
  37.     }
  38.    
  39.     # Don't allow installs onto Tiger or later. 
  40.     if(CheckVersion( "$SYSVERS", "10.4", "ProductVersion", ">=" ))
  41.     {
  42.           $EXIT_VALUE = (( 1 << 5 ) | 18);
  43.        last;
  44.     }
  45.     
  46.     if (CheckVersion("$QUICKTIME_VERS", "7.0.4", "CFBundleVersion", ">")) {
  47.         $EXIT_VALUE = (( 1 << 5 ) | 19);
  48.         last;
  49.     }
  50.     #
  51.     # Run the installinfo "preinstall" tool.
  52.     #
  53.     my $packagepath = "";
  54.     
  55.     $packagepath = $ENV{'PACKAGE_PATH'};
  56.  
  57.     
  58.     if ("$packagepath" ne "") {
  59.         my $installinfotool = "$packagepath"."/Contents/Resources/installinfo";
  60.         
  61.         my $cmd = "\"$installinfotool\" -preinstall -volume \"$ARGV[0]\"";
  62.         system("$cmd");
  63.     }
  64.     
  65. }
  66.  
  67. exit($EXIT_VALUE);
  68.  
  69.  
  70. ##################
  71.  
  72. sub CheckVersion
  73. {
  74.     my $path            = $_[0];
  75.     my $version         = $_[1];
  76.     my $keyName         = $_[2];
  77.     my $operator        = $_[3];
  78.  
  79.     if (! -e $path) {
  80.         return 0;
  81.     }
  82.  
  83.     if (!$operator) {
  84.         $operator = "==";
  85.     }
  86.  
  87.     my $oldSeperator = $/;
  88.     $/ = \0;
  89.  
  90.     open( PLIST, "$path") || do {
  91.         return 0;
  92.     };
  93.  
  94.     $plistData = <PLIST>;
  95.     $plistData =~ /<dict>(.*?)<\/dict>/gis;
  96.  
  97.     @items = split(/<key>/, $plistData);
  98.  
  99.     shift @items;
  100.     foreach $item (@items) {
  101.         $item =~ /(.*?)<\/key>.*?<string>(.*?)<\/string>/gis;
  102.         $versiondata{ $1 } = $2;
  103.     }
  104.  
  105.     close(PLIST);
  106.  
  107.     $/ = $oldSeperator;
  108.  
  109.     @theVersionArray = split(/\./, $versiondata{$keyName});
  110.     for ($i = 0; $i < 3; $i++) {
  111.         if(!$theVersionArray[$i]) {
  112.             $theVersionArray[$i] = '0';
  113.         }
  114.     }
  115.  
  116.     @versionArray = split(/\./, $version);
  117.     
  118.     my $actualVersion;
  119.  
  120.     for ($i = 0; $i < 3; $i++) {
  121.         if (($theVersionArray[$i] != $versionArray[$i]) or ($i == 2)) {
  122.  
  123.             $actualVersion = $theVersionArray[$i];
  124.             $version = $versionArray[$i];
  125.  
  126.             last;
  127.         }
  128.     }
  129.  
  130.     my $expression = '$actualVersion ' . $operator . ' $version';
  131.     if( eval ($expression) )
  132.     {
  133.         return 1;
  134.     }
  135.     else
  136.     {
  137.         return 0;
  138.     }
  139.  
  140. }
  141.